﻿/**
 *
 * @file FITKAcousticsNCTRegularTrimLayer.h
 * @brief 多层声包子类：Gap panel fiber foam
 * @author liuzhiyuan(liuzhiyuan@diso.cn)
 * @date 2024-11-1
 *
 */
#ifndef FITKACOUSTICSNCTREGULARTRIMLAYER_H
#define FITKACOUSTICSNCTREGULARTRIMLAYER_H

#include "FITKAcousticsPhysicsAPI.h"
#include "FITKAcousticsNCTLayUp.h"

namespace Acoustics
{
    /**
     * @brief 多层声包常规板
     * @author liuzhiyuan(liuzhiyuan@diso.cn)
     * @date 2024-11-1
     */
    class FITKAcousticsPhysicsAPI FITKAcousticsNCTRegularTrimLayer :public FITKAcousticsNCTAbstractLayObj
    {
        FITKCLASS(Acoustics, FITKAcousticsNCTRegularTrimLayer);
    public:
        /**
        * @brief 构造函数
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date 2024-11-1
        */
       explicit FITKAcousticsNCTRegularTrimLayer() = default;
       /**
        * @brief 析构函数
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date 2024-11-1
        */
       virtual ~FITKAcousticsNCTRegularTrimLayer() = default;
       /**
        * @brief 获取类型
        * @return double
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date 2024-11-1
        */
       NCTLayUpType getNCTLayUpType() override;
       /**
        * @brief 单位面积的质量
        * @return double
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date 2024-11-1
        */
       double getMassPerUnitArea() override;

       /**
        * @brief 流体材料ID
        * @return int
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date 2024-11-1
        */
       int getFluidMaterialID();
       /**
        * @brief 设置流体材料ID
        * @param[i] int 流体材料ID
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date 2024-11-1
        */
       void setFluidMaterialID(int id);

       /**
        * @brief 固体材料ID
        * @return int
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date 2024-11-1
        */
       int getSolidMaterialID();
       /**
        * @brief 设置固体材料ID
        * @param[i] int 固体材料ID
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date 2024-11-1
        */
       void setSolidMaterialID(int id);
       /**
        * @brief 损耗系数
        * @return double
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date 2024-11-1
        */
       double getLossFactor();
       /**
        * @brief 设置损耗系数
        * @param[i] double 损耗系数
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date 2024-11-1
        */
       void setLossFactor(double lossFactor);
       /**
        * @brief 初始化类型
        * @param[i] type 手动设置类型，不传入该参数则自动判断类型
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date 2024-11-1
        */
       void initType(FITKAcousticsNCTAbstractLayObj::NCTLayUpType type=None);
       /**
      * @brief 复制数据对象,深拷贝，数据id不拷贝
      * @param[i] obj 被拷贝的对象
      * @return true
      * @return false
      * @author liuzhiyuan(liuzhiyuan@diso.cn)
      * @date 2024-11-10
      */
       virtual bool copy(FITKAbstractDataObject* obj) override;
       /**
        * @brief 数据是否被使用（关联）
        * @param[i]  data           被检查的数据ID
        * @return true              管理器中使用了Data中包含的数据
        * @return false             管理器中没有使用Data中包含的数据
        * @author libaojun (libaojunqd@foxmail.com)
        * @date 2025-02-08
        */
       virtual bool isUsedDataObject(const QList<int> & dataIDs) override;
   private:
       /**
        * @brief  流体材料id
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date   2024-10-15
        */
       int _fluidMaterialID {-1};
       /**
        * @brief  固体材料ID
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date   2024-10-15
        */
       int _solidMaterialID {-1};
       /**
        * @brief  损耗系数
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date   2024-10-15
        */
       double _lossFactor {0.0};
       /**
        * @brief  类型
        * @author liuzhiyuan(liuzhiyuan@diso.cn)
        * @date   2024-10-15
        */
       Acoustics::FITKAcousticsNCTAbstractLayObj::NCTLayUpType _type {None};

   };
}

#endif // FITKACOUSTICSNCTREGULARTRIMLAYER_H
